package carrodacarol;

/**
 *
 * @author CAROL
 */
public class Carro {

    /*
     * atributos modificadores tipo nomeAtributo ex. private int rodas;
     */
    private int rodas;
    private boolean buzina;
    private int vidros;
    private Luz farolDianteiro;
    private Luz luzDeFreio;
    private Luz lanterna;
    private Luz setaEsquerda;
    private Luz setaDireita;
    private int posicao;
    private String posicaoAtualRua;

//construtores	
    public Carro() {
        this.setaDireita = new Luz("Seta Direita","Amarela");
        this.setaEsquerda = new Luz("Seta Esquerda","Amarela");
        this.lanterna = new Luz ("Lanterna","Branca");
        this.farolDianteiro = new Luz ("Farol Dianteiro","Branca");
        this.luzDeFreio = new Luz ("Luz de Freio","Vermelha");
    }

//metodos	
    public void buzina(String[] rua) {
        if (rua.length > posicao + 1) {
            posicaoAtualRua = rua[posicao];
            rua[posicao + 1] = null;
        }

    }

    public boolean podeVirarDireita(String[] rua) {
        return ("curvaDireita".equals(posicaoAtualRua)); //nao incremente a posicao, pois não estou andando pra frente, apenas verificando à direita.
    }

    public void viraDireita(String[] rua) {
        rua[posicao] = null;
    }
    
    public Luz getSetaDireita(){
        return setaDireita;
    }
    
    public void setSetaDireita(Luz setaDireita){
        this.setaDireita = setaDireita;
    }

    public boolean estaNaRua(String[] rua) {
        for (int i = 0; i < rua.length; i++) {
            if ("carro".equals(rua[i])) {
                return true;
            }
        }
        return false;
    }
    
    public boolean estaNoFimDaRua(String[] rua) {
        if (rua.length == posicao + 1){
            return true;
        }
        return false;
    }

    public boolean viraEsquerda() {
        return false;
    }

    public boolean podeAndar(String[] rua) {
        if ((rua.length == posicao + 1) || ("pedestre".equals(rua[posicao + 1]))) {
            System.out.println("N pode andar para a Posicao=" + (posicao + 1));
            return false;
        }
        return true;
    }

    public boolean andaPraFrente(String[] rua) { //estamos setando em que rua o carro está andando
        rua[posicao] = null;
        posicao++;
        posicaoAtualRua = rua[posicao];
        System.out.println("Andou Posicao=" + posicao);
        rua[posicao] = "carro";
        return true;

    }
}